# 呼叫中心API服务 Dockerfile

# 构建阶段
FROM golang:1.21-alpine AS builder

# 设置工作目录
WORKDIR /app

# 安装构建依赖
RUN apk add --no-cache gcc musl-dev git

# 设置Go环境变量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct

# 复制Go模块文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 复制源代码
COPY . .

# 构建应用
RUN go build -ldflags "-w -s -X main.Version=1.0.0" -o callcenter-api ./cmd/api/main.go

# 运行阶段
FROM alpine:3.18

# 设置工作目录
WORKDIR /app

# 安装运行依赖
RUN apk add --no-cache ca-certificates tzdata

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

# 从构建阶段复制应用
COPY --from=builder /app/callcenter-api .

# 复制配置文件
COPY .env.example .env.example

# 创建配置目录
RUN mkdir -p /app/logs

# 设置环境变量
ENV SERVER_PORT=8000
ENV SERVER_HOST=0.0.0.0
ENV SERVER_ENVIRONMENT=production

# 暴露端口
EXPOSE 8000

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s \
  CMD wget --no-verbose --tries=1 --spider http://localhost:8000/health || exit 1

# 启动命令
CMD ["./callcenter-api"]